1. Field of the Invention
The present invention relates to a method and apparatus for reducing power needed to refresh a memory. More particularly, the present invention relates to a method and apparatus for balancing coding used during refresh of a memory.
2. Description of Related Art
An interface system basically includes a transmitter that converts information into a signal, a transmission medium over which the signal is transmitted, and a receiver that receives and converts the signal back into usable information. Typically, drivers used in interface systems are inverter-type, i.e., when data is “1”, there is no current path, and when data is “0”, there is a current path through the transmission medium. Thus, according to the data level, the total current consumption of the drivers may vary, which may result in simultaneous switching noise (SSN).
Further, parasitic inductance between voltage sources of the interface system may cause noise, e.g. jitter, and may reduce the voltage margin or time margin of the data signal. Finally, other noise may degrade data frequency and system performance.
There are numerous coding techniques that may be used to provide fast, high quality, i.e., reduced noise, transmission. Different coding techniques may provide different tradeoffs, e.g., deployment, overhead, transition density and DC balance, alignment, error (protection, detection, replications), and complexity (gate count).
One widely used coding technique is 8B/10B, which provides efficient transitions to guarantee proper DC balance, by ensuring that there are an equal number of ones and zeros in a stream, ease of alignment (finding where the byte starts in a bit stream), robustness (tolerance to errors), and low design complexity. The 8B/10B coding method maps 8B symbols to 10B symbols. All codes used in 8B/10B have from 3 to 10 transitions. Each code word never generates more than four ones or zeros in a row or creates an imbalance greater than one. Using these properties, each character is assigned two mappings (the code and the inverse of the code), and the transmit process may select the appropriate code (±) to keep the running disparity between ±1. This means that there are just as many “1” s as “0”s in a string of two symbols, and that there are not too many “1”s or “0”s in a row. This is an important attribute for a signal that needs to be sent at high rates because it helps reduce intersymbol interference.
All of these features have made 8B/10B the most widely used coding method. However, 8B/10B has a large overhead of 25%, i.e., a symbol rate that is 25% greater than a data rate, a high coding complexity, and a large layout area. Further, as demand for faster computing devices has increased, frequencies at which these devices operate have increased. These higher frequencies demand more power. Most computing systems use dynamic memories, which may require periodic refreshing in order to maintain data stored therein. Typically, the more ones multi-bit data has, the more power is required to refresh the multi-bit data.
A data bus inversion (DBI) method, illustrated in FIG. 9, may be used to reduce coding complexity, layout area and power consumption of the 8B/10B method.
In particular, the DBI method may include receiving multi-bit data, e.g., eight-bit data, in step S910 and counting a number of ones and zeros in the multi-bit data in step S920. Then, whether a number of zeros exceeds a predetermined value k, e.g., four for eight-bit data, may be determined in step S930. If the predetermined value k is exceeded, the data word may be inverted and a flag may be set to a first value, e.g., one, in step S940. If the predetermined value k is not exceeded, the data word may be maintained and the flag may be set to a second value, e.g., zero, in step S950. The data may then be decoded in accordance with the value of the flag. The flag serves as the inversion indicator.
However, even using the DBI method, a number of data “0” may be between zero and four. Therefore, the maximum current consumption may still be 4*IDQ (quiescent current), where 1*IDQ refers to an amount of current consumption per one DQ.